import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpModule } from '@angular/http';
import { Routing } from './app.routes';
import { FormsModule } from '@angular/forms'
import { NgxSmartModalModule } from 'ngx-smart-modal';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';

//Services
import { GAService } from './shared/services/ga.service';
import { UtilsService } from './shared/services/utils.service';

//Components
import { AppComponent } from './app.component';
import { CompanyRiskComponent } from './companyRiskRating/companyRisk.component';
import { ListingRiskComponent } from './listingRiskRating/listingRisk.component';
import { PaginationComponent } from './shared/components/pagination/pagination.component';
//Directives
import { BulletChartDirective } from './shared/directives/bulletChart.directive';
import { BenchmarkChartDirective } from './shared/directives/benchmarkChart.directive';
import { ExposureChartDirective } from './shared/directives/exposureChart.directive';
import { IssueChartDirective } from './shared/directives/issueChart.directive';
import { ScatterChartDirective } from './shared/directives/scatterChart.directive';
import { BarChartDirective } from './shared/directives/barChart.directive';
import { MapChartDirective } from './shared/directives/mapChart.directive';
import { DistributionChartDirective } from './shared/directives/distributionChart.directive';

//Pipes
import { MainIssuePipe } from './shared/pipes/mainIssue.pipe';
import { StrReplacePipe } from './shared/pipes/strReplace.pipe';

//AmCharts
import { AmChartsModule } from "@amcharts/amcharts3-angular";

//GoogleAnalytics
import { GoogleAnalyticsModule, GA_TOKEN } from 'googleanalytics-angular';
import { AnalyticsService } from './shared/services/analytics.service';

//MultiSelect
import { MultiselectDropdownModule } from "angular-2-dropdown-multiselect"

//RiskRating - company menu pages
import { CompanyRiskSummaryComponent } from './companyRiskRating/summary/summary.component';
import { RiskSubIndustryComponent } from './companyRiskRating/subIndustry/subIndustry.component';
import { RiskMeiComponent } from './companyRiskRating/mei/mei.component';
//RiskRating - company summary elements
import { RatingOverviewSummaryComponent } from './companyRiskRating/summary/components/ratingOverview.component';
import { AnalystViewSummaryComponent } from './companyRiskRating/summary/components/analystView.component';
import { KeyIssuesSummaryComponent } from './companyRiskRating/summary/components/keyIssues.component';
import { SubIndustrySummaryComponent } from './companyRiskRating/summary/components/subIndustry.component';
import { EventDetailsComponent } from './companyRiskRating/mei/components/eventDetails/eventDetails.component';
import { IndicatorDetailsComponent } from './companyRiskRating/mei/components/indicatorDetails/indicatorDetails.component';
//RiskRating - mei elements
import { RatingOverviewMeiComponent } from './companyRiskRating/mei/components/ratingOverview.component';
import { AnalystViewMeiComponent } from './companyRiskRating/mei/components/analystView.component';
import { SubIndustryMeiComponent } from './companyRiskRating/mei/components/subIndustry.component';
import { MeiIndicatorsComponent } from './companyRiskRating/mei/components/indicators.component';
//RiskRating - listing
import { CompaniesListComponent } from './listingRiskRating/companyList/companyList.component';
import { IntervalChartDirective } from './shared/directives/intervalChart.directive';
import { PillarDetailsComponent } from './companyRiskRating/mei/components/pillarDetails/pillarDetails.component';

@NgModule({
  declarations: [
    AppComponent,
    CompanyRiskComponent,
    ListingRiskComponent,
    //risk company listing
    CompaniesListComponent,
    PaginationComponent,
    //risk company menu
    CompanyRiskSummaryComponent,
    RiskSubIndustryComponent,
    RiskMeiComponent,
    //risk company summary elements
    RatingOverviewSummaryComponent,
    AnalystViewSummaryComponent,
    KeyIssuesSummaryComponent,
    SubIndustrySummaryComponent,
    EventDetailsComponent,
    IndicatorDetailsComponent,
    PillarDetailsComponent,
    //risk compant mei elements
    RatingOverviewMeiComponent,
    AnalystViewMeiComponent,
    SubIndustryMeiComponent,
    MeiIndicatorsComponent,
    //directives
    BulletChartDirective,
    IntervalChartDirective,
    BenchmarkChartDirective,
    ExposureChartDirective,
    IssueChartDirective,
    ScatterChartDirective,
    BarChartDirective,
    MapChartDirective,
    DistributionChartDirective,    
    //pipes
    MainIssuePipe,
    StrReplacePipe
  ],
  imports: [
    BrowserModule,
    Routing,
    HttpModule,
    AmChartsModule,
    FormsModule,
    MultiselectDropdownModule,
    BrowserAnimationsModule,
    NgxSmartModalModule.forRoot(),
    GoogleAnalyticsModule.forRoot()
  ],
  providers: [
    GAService,
    UtilsService,
    AnalyticsService
  ],
  bootstrap: [AppComponent]
})

export class AppModule {
}
